iT邦幫忙

2024 iThome 鐵人賽

DAY 2
0
Odoo

30天就算 0 基礎,也能使用 GenAI 創造簡單的 Odoo 模組應用系列 第 2

【Day02】什麼是『寫程式』? 什麼最重要呢? 這些如何影響到下指令給 GenAI

  • 分享至 

  • xImage
  •  

寫程式是什麼?我的回答是:【使用電腦的語言去解決問題】。而第二個問題一定會是資料 (Data),尤其是資料在電腦裡的表現型態 (Data Representation)。


文章架構

  • 更深入解釋:什麼是「使用電腦的語言解決問題」
    • 以台灣人和 GenAI 為例
  • Python 最基本的資料型態:原始型態 (Primitive Type)
    • (額外補充) 數學是無限的,但電腦存的資料是有限的
  • 學習上述後,使用 GenAI 的過程會變得像是...

這是我教學經驗的精華。在這個系列文章的讀者多半有一定的職場或程式經驗,而我有幸接觸到來自各行各業的學生,教他們 Python 這門程式語言。不論是國中生、國內外高中生,還是求職者、在職人士及企業內訓,儘管背景不同,大家所面對的問題往往相似,只是程度不同而已。


更深入解釋:什麼是「使用電腦的語言解決問題」

以台灣人與美國人為例

我們可以把我們跟電腦想成 台灣人 和 美國人,我們有件事情希望請美國人去做時,我們是不是會去講英文,等對方完成後會跟我們回報,並把資料交給我,這次我再把它整理整理再給老闆過目。

以台灣人與電腦為例

換到電腦上也一樣,我們有件事情希望電腦幫我們去做,所以我們用寫程式語言交給電腦去執行,等對方完成後會跟我們回報,我們也會根據對方完成的正不正確再去溝通,也就是再去修改我們提交出去的程式語言,等到結果是我們要的,我們再把資料給老闆確認過目。

這樣就結束了嗎? 還沒呢,由於現在加入了 GenAI,那你想想上面的例子,現在會變成什麼情況吧?

以台灣人與 GenAI 為例

有了 GenAI,情況變得更有趣了。現在我們可以用中文指示 GenAI (例如 ChatGPT),再由 GenAI 根據我們的需求,讓它的分身 GenAI Python 去撰寫程式,並將結果交回給我們。我們接著測試程式的可行性,這次我們像是小老闆一樣,需要判斷 GenAI 給出的程式碼是否符合需求,並進行簡單的測試。

如果結果不符預期,我們可能 …

  • 會跟老闆一樣,退回去重做 !
  • 跟資深主管一樣,跟 GenAI 好好講,哪邊出錯了,要怎麼改、怎麼做,
  • 像資深工程師一樣說,這邊的可讀性不好,這邊不好維護,應該要怎麼改。

無論如何,最終我們都需要交付一份可以運行的程式碼。而這個過程往往會需要更精確的指令,或者你可能會自己跳下來直接修改程式碼。


電腦的角色沒有改變

https://ithelp.ithome.com.tw/upload/images/20240916/20163326oA2JY9LBmV.png

你會發現,電腦在這個過程中扮演的角色始終不變,真正執行指令的依然是電腦。下面的圖示中,我故意拿掉了演算法 (Algorithm),重點在於上方標示的 inputoutput,這兩個是電腦裡資料的表示形式,所以我們需要先了解電腦中的資料是如何表現的。


Python 裡最原始的資料型態:原始型態 (Primitive Type)

就如同下面的圖,我們重點來提點一下,由於我們要將我們的認知中的資料翻譯過去給電腦,所以來看看這是如何對應的吧。

https://ithelp.ithome.com.tw/upload/images/20240916/20163326qJoi5VgxAn.png

  • int (Integer) 整數,也就如同上面看到的數字,可以忽略後面的 binary, ocatal, hexa (同樣數值,不同的表示模式而已)
  • float (Float Point) 浮點數,只要記住有小數點的數字或分數,可以是很大的數字也可以是很小的數字
  • bool (Boolean) 布林代數,也就是 對 或 錯,簡單吧
  • str (String) 字串,也就是我們人類寫的文字都算,注意 “ 和 ‘ ,用這兩個符號包起來的即是字串,像電腦要顯示出今天是個好天氣,就會用到 “今天是個好天氣“,輸出給我們
  • 值得注意的有 \ (Back Slash) 和 “““ (Multiline String)
    • \ 又稱 escaped character (字元),有出現就代表特別的用法,像是 \n 是換行,\t 就是你按鍵盤上的 Tab 鍵
    • 用 “““ 前後包圍住的字串,跟 “ 不一樣的點是,可以輸出多行 (有換行) 的字串
  • bytes 是在寫底層程式 (作業系統之類的) 才比較會用到,這跟我們的目標不同

(額外補充) 數學是無限的,但電腦存的資料是有限的

在數學中,小數可以無限延伸,但在電腦中卻無法精確表示。舉例來說,1.5 加上 1.4 的結果可能會變成 2.8999999999999999,這是因為電腦無法精確表示某些小數。我們可以使用 round() 函數進行四捨五入,解決這類問題。


學習上述後,使用 GenAI 會像...

在學習了基本的資料型態後,使用 GenAI 的方式會變得更精確。例如:

原始指令:
「請幫我把 x, y, z 座標平方後開根號」

優化後的指令:
「我給你一組 x, y, z 的整數資料,請你幫我平方後開根號,並以浮點數型態返回結果」

再比如:

原始指令:
「請幫我寫一個會議邀請的寄信範本」

優化後的指令:
「請幫我寫一個會議邀請的寄信範本,使用 Multiline String 表示格式,裡面的時間、地點、寄信人、收信人都要以字串的形式方便替換」

明天我們在來講到變數和運算 : ) 明天見!


上一篇
【Day01】如何從 0 基礎,跨足世界上最大的開源 ERP 專案
下一篇
【Day03】寫程式解決問題有很多步驟,那上個步驟的結果如何傳遞給下個步驟呢?
系列文
30天就算 0 基礎,也能使用 GenAI 創造簡單的 Odoo 模組應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言